package com.leo.algorithm.linked;

public class GetIntersection {
    public static void main(String[] args) {

    }

    // 判断两个链表是否存在相交 ；如果相交则返回相交的那个节点；如果没相交则返回 null
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        // p1 指向 A 链表头结点，p2 指向 B 链表头结点
        ListNode p1 = headA, p2 = headB;
        while (p1 != p2) {
            // p1 走一步，如果走到 A 链表末尾，转到 B 链表
            if (p1 == null) p1 = headB;
            else            p1 = p1.getNext();
            // p2 走一步，如果走到 B 链表末尾，转到 A 链表
            if (p2 == null) p2 = headA;
            else            p2 = p2.getNext();
        }
        return p1;
    }
}
